home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / 64bitadd.lha / Plot.s < prev   
Encoding:
Text File  |  1990-09-14  |  3.2 KB  |  131 lines

  1. ; ----------------------------------------------
  2. ;
  3. ; Program....: PLOT.S
  4. ; Programmør.: Kenneth Jensen
  5. ;
  6. ;
  7. ; Her er så vores lille plot rutine. 
  8. ; Den er meget simple at bruge, da man bare
  9. ; skal tilskrive variablerne x og y med værdier
  10. ; og derefter kalde tegn. Se nedenstående 
  11. ; eksempel.
  12. ;
  13. ; ----------------------------------------------
  14. S:
  15.  
  16.     Bsr    Find_Skarm    ; Skærm adresse findes.
  17.  
  18.     Move.w    #607,x        ; Her sættes x og y
  19.     Move.w    #250,y          ; værdi, og der tegnes
  20.     Bsr    tegn        ; en pixel.
  21.  
  22.  
  23. ;----------------------------------------
  24. ; Hovedprogram
  25. ;----------------------------------------
  26. Hoved_Program:
  27.  
  28.     Cmp.b    #$bc,$bfe001    ; Test v. muse knap.
  29.     Beq    Slut_Program    ; Hvis nedtrykt da slut.
  30.  
  31.     Bra    Hoved_Program    ; Hop til hovedprogram.
  32. ;---------------------------------------------------
  33.  
  34.  
  35.  
  36. ;---------------------------------------------------
  37. ; Her afsluttes programmet.
  38. ;---------------------------------------------------
  39. Slut_Program:
  40.     clr.l    d0
  41.     rts
  42. ;---------------------------------------------------
  43.  
  44.  
  45. ;---------------------------------------------------
  46. ; Her findes skærmens adresse, og den lagres i
  47. ; variablen <screen>.
  48. ;---------------------------------------------------
  49. Find_Skarm:
  50.  
  51.     Move.l    4,a6        ; Execbase
  52.     Move.l    156(a6),a1    ; Graphics library adresse i a1
  53.     Move.l    50(a1),a0    ; System copperlist 2
  54.  
  55.     Move.w    122(a0),d0    ;
  56.     Swap    d0        ; Hent skærm adresse i d0
  57.     Move.w    126(a0),d0    ;
  58.  
  59.     Move.l    d0,screen    ; Flyt skærm adresse til a1
  60.  
  61.     Rts
  62. ;---------------------------------------------------
  63.  
  64. ;----------------------------------------
  65. ; Tegne rutinen.
  66. ;----------------------------------------
  67. Tegn:
  68.     Movem.l    d0-d7/a0-a1,-(sp)  ; Red registre.
  69.     Clr.l    d0           ; 
  70.     Clr.l    d1                 ;
  71.     Clr.l    d2                 ; Clear registre.
  72.     Clr.l    d3                 ;
  73.     Clr.l    d4                 ;
  74.     Move.l    screen,d0       ; Flyt skærm adresse til D0.
  75.     Move.w    y,d1           ; Flyt y til D1.
  76.     Mulu    #80,d1               ; Gang D1 med 80.
  77.     Add.l    d1,d0              ; Adder resultat til D0.
  78.     Clr.l    d1                 ; Clear D1.
  79.     Move.w    x,d1               ; Flyt x til D1.
  80.     Divu    #8,d1              ; Find antal byte (divider med 8).
  81.     Move.w    d1,d2              ; Flyt resultat til D2.
  82.     Swap    d1                 ; Ombyt D1.
  83.     Move.w    d1,d3              ; Flyt rest til D3.
  84.     Add.w    d2,d0              ; Adder resultat (D2) til D0.
  85.     Move.b    #%10000000,d4      ; Tænd kun bit 7 i D4.
  86.     Lsr.b    d3,d4               ; Skub denne bit svarende til rest.
  87.     Move.l    d0,a1              ; Flyt nu D0 til A1.
  88.     Or.b    d4,(a1)            ; Sæt endelig pixel på skærmen.
  89.     Movem.l    (sp)+,d0-d7/a0-a1  ; De reddede registre flyttes
  90.                                    ; tilbage.
  91.     rts
  92. ;------------------------------
  93.  
  94. ;----------------------------------------
  95. ; Slette rutinen
  96. ;----------------------------------------
  97. Slet:
  98.  
  99.     Movem.l    d0-d7/a0-a1,-(sp)  ; Red registre.
  100.     Clr.l    d0
  101.     Clr.l    d1
  102.     Clr.l    d2
  103.     Clr.l    d3
  104.     Clr.l    d4
  105.     Move.l    screen,d0
  106.     Move.w    y,d1
  107.     Mulu    #80,d1
  108.     Add.l    d1,d0
  109.     Clr.l    d1
  110.     Move.w    x,d1
  111.     Divu    #8,d1
  112.     Move.w    d1,d2
  113.     Swap    d1
  114.     Move.w    d1,d3
  115.     Add.w    d2,d0
  116.     Move.b    #%01111111,d4
  117.     Ror.b    d3,d4
  118.     Move.l    d0,a1
  119.     And.b    d4,(a1)
  120.     Movem.l    (sp)+,d0-d7/a0-a1  ; De reddede registre flyttes
  121.                                    ; tilbage.
  122.  
  123.     Rts
  124. ;----------------------------------------
  125.  
  126. dc.w    0
  127. x:    dc.w    0
  128. y:    dc.w    0
  129. a:    dc.w    0
  130. screen:    dc.l    0
  131.